package com.super_;

/**
 * @Author 小闽
 * @Date 2024/8/10 10:51
 * @PackageName: com.super_
 * @ClassName: B
 * @Description: B类
 * @Version 1.0
 */
public class B extends A {
    public int n1 = 999;
    /**
     * 访问父类的属性，但不能访问父类的private属性，如果要访问需要使用super.属性名;
     */
    public void hi(){
        System.out.println(super.n1 + " " + super.n2 + " " + super.n3);
    }
    /**
     * 访问父类的方法，不能访问父类的private方法，super.方法名(参数列表);
     */
    public void ok(){
        super.test100();
        super.test200();
        super.test300();
    }
    /**
     * 访问父类的构造器：super(参数列表)； 只能放在构造器的第一句，只能出现一句！
     */
    public B(){
        //super();   // 父类无参构造器
        //super("jack");  // 父类有参构造器
        super("jack", 20); // 父类有参构造器
    }
    public void sum(){
        /**
         * 如果要调用父类的call方法，这时，因为子类B没有call方法，所以
         * (1) 先找本类，如果有，则调用
         * (2) 如果没有，则找父类（如果有，并可以调用，则调用）
         * (3) 如果父类没有，则继续找父类的父类，整个规则，就是一样的，直到Object类
         * 提示： 如果查找方法的过程中，找到了，但是不能访问，则报错
         * 如果查找方法的过程中，没有找到，则提示方法不存在
         */
        System.out.println("B类的sum方法...");
        call();
        this.call();
        super.call(); // 找cal方法的顺序是直接查找父类，其他的规则一样

        // 访问属性,访问规则和方法一样
        System.out.println(n1);
        System.out.println(n2);
    }
}
